/**
 * 用户层级管理 
 */
(function() {
    var layer = function() {
        var self = this;

        // 用户的层级配置
        self.config = {};
    };
    layer.prototype = {};

    // 重新匹配所有用户层级
    layer.prototype.repair = function(cb) {
        CMD.user_layer_reset(cb);
    }

    // 删除某个层级的配置信息
    layer.prototype.remove = function(level) {
        var self = this;
        if (level == 0) {
            alert2("默认层不能删除！", true);
            return;
        }
        var d = self.config[level + ""];
        if (d) {
            console.log(d);
            delete self.config[level + ""];
            CMD.user_layer_delete(d.id);
        }
    }

    // 添加分层
    layer.prototype.add = function(data, cb) {
        var self = this;
        if (self.config[data.level]) {
            alert2("此分层已经存在！", true);
            return false;
        }
        CMD.user_layer_save(data.level, data, cb);
        return true;
    }

    // 保存分层
    layer.prototype.save = function(data, cb) {
        var self = this;
        self.config[data.level] = data;
        CMD.user_layer_save(data.level, data, cb);
        return true;
    }

    // 获取层级配置
    layer.prototype.query = function(level, cb) {
        var self = this;
        var f = function() {
            if (level === undefined) {
                cb(self.config);
            }
            else {
                cb(self.config[level]);
            }
        };
        if (Util.isEmpty(self.config)) {
            self._update(function() {
                f();
            });
        }
        else f();
    }

    // 对配置排序下
    layer.prototype.sort = function(config) {
        var arr = [];
        for (var k in config) {
            arr.push(config[k]);
        }
        arr.sort(function(a, b) {
            return a.level - b.level;
        });
        return arr;
    }

    // 取得各分层的用户数量
    layer.prototype.queryStat = function(cb) {
        cb({
            0: 5,
            1: 500,
        });
    }

    // 从服务器获取层级配置信息
    layer.prototype._update = function(cb) {
        var self = this;
        CMD.user_layer_query(function(r) {
            self.config = {};
            for (var i in r) {
                self.config[r[i].level] = r[i];
            }
            cb();
        });
    };

    window.Layer = new layer();
})();
